
/**
 * 弹出教师新增/更新对话框
 */
let layerIndex;
function showTeacherDlg(id) {
    let title = "新增教师";
    if (id) {
        // 是编辑
        title = "编辑教师";
        $("#formId").css("display", "block"); // 显示ID字段
        // 读取教师信息并赋值
        $.ajax({
            url: "/api/teacher/" + id,
            method: "GET",
            success: function (result) {
                console.log(result);
                // 遍历result对象并将值填充到#teacherForm表单中
                $.each(result, function (key, value) {
                    var field = $('#teacherForm [name="' + key + '"]');
                    if (field.is(':radio')) {
                        field.filter('[value="' + value + '"]').prop('checked', true);
                    } else if (field.is(':checkbox')) {
                        field.prop('checked', value === "yes");
                    } else {
                        field.val(value);
                    }
                });
                $("#id").val(result.id); // 确保ID也被设置
            },
            error: function () {
                layer.msg('获取数据失败');
            }
        });
    } else {
        // 是新增
        $("#teacherForm")[0].reset();
        $("#formId").css("display", "none"); // 隐藏ID字段
        $("#id").val(''); // 清空ID字段
    }

    layerIndex = layer.open({
        type: 1,
        title: title,
        area: ['480px', 'auto'],
        content: $('#teacherForm'), // 捕获层
        success: function (layero, index) {
            // 如果是编辑，ID已经在上面的AJAX请求中被设置
            // 如果是新增，ID字段已经被清空
        }
    });
}

function getSearchCondition(){
    let formData={};
    $('#queryForm').find('input,select').each(function(){
        let name=$(this).attr('name');  //获取元素的name属性
        let value = $(this).val();//获取元素的值
        //只有name属性存在且不为空才会添加到formData中
        if(name&&value){
            formData[name]=value;
        }
    });
    return formData;
}


layui.use(function (){
    //(1)验证表单是否合法
    layui.form.on('submit(teacher-dlg)',function (data){
        event.preventDefault();//阻止表单默认提交
        commitTeaDlg();
    })
    //(2)表格初始化
    const table=layui.table;
    let teacher=getSearchCondition();
    //创建渲染实例
    table.render({
        elem:'#tbTeacher',
        url:'/api/teacher/getbypage', //此处为静态模拟数据，实际使用时需换成真实接口
        method:"POST",
        contentType:'application/json',
        where:{"data":teacher},
        page:true,
        cols:[[
            {type: 'checkbox',fixed:'left'},
            {field:'id',fixed: 'left',width:80,title:'id',sort:true},
            {field:'name',title:'姓名'},
            {
                field:'tno',
                title:'工号',
                width: 150,
            },
            {field:'sex',width:80,title:'性别',sort:true,
            templet:d=>d.sex===1?'男':d.sex===2?'女':'未知'},
            {field:'age',width:100,title:'年龄',sort:true},
            {fixed: 'right',title: '操作',width: 134,minWidth:125,templet:'#editTemplate'}
        ]],
        done:function (re){

        }
    });

    //出发单元格工具时间
    table.on('tool(tbTeacher)', function (obj) {
        var data = obj.data; // 获得当前行数据
        if (obj.event === 'edit') {
            layer.confirm('是否编辑这条记录？', function (index) {
                // 用户确认编辑
                showTeacherDlg(data.id); // 传入当前行的ID
                layer.close(index); // 关闭确认对话框

            });
        }
    });
});

function search(){
    let teacher=getSearchCondition();
    const table=layui.table;
    table.reloadData("tbTeacher",{
        where:{data:teacher}
    });
    console.log("where condition:"+JSON.stringify(teacher));
}

function commitTeaDlg() {
    let id = $("#id").val();
    let formData = $("#teacherForm").serialize();
    const table=layui.table;
    // 禁用按钮
    $("#btnOK").prop("disabled", true).addClass("layui-btn-disabled");

    // 确定请求的URL和方法
    let url = id ? "/api/teacher/update" : "/api/teacher/add";
    let method = id ? "PUT" : "POST";

    $.ajax({
        url: url,
        method: method,
        data: formData,
        success: function(result) {
            // 操作成功，刷新教师列表并关闭弹出层
            layer.msg('操作成功');
            table.reload('tbTeacher'); // 确保这里的参数与表格初始化时的elem匹配
            if (layerIndex) {
                layer.close(layerIndex);
            }
        },
        error: function(jqXHR, textStatus, errorThrown) {
            console.error("Request failed: " + textStatus + " - " + errorThrown);
            layer.msg('操作失败');
        },
        complete: function() {
            // 无论成功还是失败，都重新启用按钮
            $("#btnOK").prop("disabled", false).removeClass("layui-btn-disabled");
        }
    });
    layer.close(layerIndex);
}
//删除函数
function deleteConfirm() {
    const table = layui.table;
    // 获取表格的选中状态
    const checkStatus = table.checkStatus('tbTeacher'); // ‘tbTeacher是表格的ID或lay-filter’
    const data = checkStatus.data;
    // 未选中要删除的行则提醒“请选择要删除的行”
    if (data.length === 0) {
        layer.msg('请选择要删除的行');
        return;
    }
    // 确定删除操作
    layer.confirm('是否删除选中的行？', function (index) {
        // 发送删除请求
        $.ajax({
            url: '/api/teacher/delete', // 确保这是正确的URL
            method: 'DELETE',
            dataType: 'json',
            contentType: 'application/json', // 设置请求头Content-Type为application/json
            data: JSON.stringify(data.map(item => item.id)), // 将选中的ID数组转换为JSON字符串
            success: function (res) {
                if (res.code === 0) {
                    layer.msg('删除成功');
                    table.reload('tbTeacher');
                } else {
                    layer.msg('删除失败：' + res.msg);

                }
            },
            error: function (xhr, status, error) {
                layer.msg('请求失败：' + error);
            }
        });
        // 关闭确认框
        layer.close(index);
    });
}